#pragma once
#include "AsyncSendQueueForSelectModel.h"
#include <concrt.h>
#include <unordered_map>

class CAsyncSendQueueForOverlappedModel :
	public CAsyncSendQueueForSelectModel
{
	
	
	WSAOVERLAPPED_CREATE_FUNCTOR			m_wsaoverlappedCreateFunctor;
	LPWSAOVERLAPPED_COMPLETION_ROUTINE		m_completionRoutine;
	virtual bool coreSend( SOCKET socket, IStreamBuffer& streamBuffer ) override;

public:
	CAsyncSendQueueForOverlappedModel(DISCONNECT_FUNCTOR disconnectFunctor, WSAOVERLAPPED_CREATE_FUNCTOR wsaoverlappedCreateFunctor, LPWSAOVERLAPPED_COMPLETION_ROUTINE completionRoutine);
	virtual ~CAsyncSendQueueForOverlappedModel(void);

	virtual bool	Send( SOCKET socket, size_t bytesSent ) override;
};



